Concurrency control of software applications executing in parallel can be facilitated through the use of semaphores, locks, Software Transactional Memory (STM), or other mechanism used to enforce policies regarding the use of system resources. System resources include memory, Central Processing Unit (CPU) cycle management, or other resources that must be managed where a plurality of software applications need access to a system. Common to semaphores and locks is a pessimistic approach, whereby a software application must possess a semaphore, lock, or similar mechanism before being allowed access to shared resources. In contrast, common to STM is an optimistic approach, whereby software applications are given access to shared resources, and only after access is granted does a validation process occur. The validation process under STM can result in a commit occurring, where the software application is allowed access to the shared resources, or an abort occurring where the software application is denied access to system resources. In cases where an abort occurs, the system resources may be rolled back to a previous state (e.g., a memory value may be restored to a state before the software application being validated was executed).